#!/usr/bin/python3

import datetime
import jinja2
import json
import os
import shutil
import sys
import time

def cpt(t):
    import json
    print(json.dumps(t,ensure_ascii=False))

rd={}

class main:
    def __init__(self):
        self.main()
    def main(self):
        for ver in ["2.1","2.2"]:
            rd["ver"]=ver
            print("处理版本"+ver)
            self.字段表={}
            rd["fieldlist"]=[]
            for l in open("../data/field.txt","r",encoding="gbk").readlines():
                版本号,字段id,字段名,字段类型,字段长度,小数长度,描述,_=l.split("|")
                if 版本号 != ver:continue
                self.字段表[字段id]={"字段名":字段名,"字段类型":字段类型,"字段长度":字段长度,"小数长度":小数长度,"描述":描述}
            rd["fbindex"]=json.load(open("../data/index.json",'r'),encoding="gbk")  #数据文件、业务类型清单
            for i in range(100):
                if hasattr(main,"rd%d" %(i)):
                    getattr(main,"rd%d" %(i))(self)
            t=open("ofbdep2.txt","r",encoding="gbk").read()
            tmpl=jinja2.Template(t)
            tex=open("ofbdep%s.tex" %(ver),"w",encoding="utf8")
            tex.write(tmpl.render(rd))
            tex.close()
            os.system("xelatex ofbdep%s.tex" %(ver))
            os.system("xelatex ofbdep%s.tex" %(ver))
    def rd1(self):  #处理基金业务类型表
        rd["servicetype"]=[]
        for l in open("../data/servicetype.txt","r",encoding="gbk").readlines():
            rd["servicetype"].append(l.split("|"))
    def rd2s(self):  #处理各业务的数据项
        businesslist=[]
        for fb in rd["文件清单"]:
            for df in fb["datafile"]:
                for bs in df["business"]:
                    if bs["equcode"] not in businesslist:businesslist.append(bs["equcode"])
        for yw in businesslist:
            rd["st"+yw]=[]
            print("../data/st%s.txt" %(yw))
            cpt(self.field)
            for l in open("../data/st%s.txt" %(yw),"r",encoding="gbk").readlines():
                d=l.split("|")
                print(d)
                f=self.field[d[0]]
                h=[]
                if d[2][0]=="Y":
                    h.append(d[0]+"*")
                else:
                    h.append(d[0])
                h.append(f[0])
                if f[1]=="N":
                    h.append("%s%s.%s" %(f[1],f[2],f[3]))
                else:
                    h.append("%s%s" %(f[1],f[2]))
                h.append(f[4])
                h.append(f[5])
                h.append(d[1])
                rd["st"+yw].append(h)
    def rd3(self):  #处理 数据文件字段 sjwjzd
        rd["sjwjzd"]=[]
        filelist=[]
        fileinfo={}
        for fb in rd["fbindex"]:
            for df in fb["datafile"]:
                if df["mark"] not in filelist:
                    filelist.append(df["mark"])
                    fileinfo[df["mark"]]=df["describe"]
        filelist.sort()
        data={}
        for l in open("../data/filefield.txt","r",encoding="gbk").readlines():
            版本号,文件类型,字段id,_,是否必需,备注,_=l.split("|")
            if 版本号!=rd["ver"]:continue
            if 文件类型 not in data:
                data[文件类型]=[]
                wz=1    #位置
            字段=self.字段表[字段id]
            zdm=字段["字段名"]
            if 是否必需=="Y":zdm=zdm+"*"
            if 字段["字段类型"]=="N":
                zdlx="%s%s.%s" %(字段["字段类型"],字段["字段长度"],字段["小数长度"])
            else:
                zdlx="%s%s" %(字段["字段类型"],字段["字段长度"])
            data[文件类型].append({"id":字段id,"zdm":zdm,"lx":zdlx,"wz":wz,"ms":字段["描述"],"bz":备注})
            wz=wz+int(字段["字段长度"])

        for wj in filelist:
            if wj not in data:
                continue
            rd["sjwjzd"].append({"section":wj+fileinfo[wj],"data":data[wj]})
    def rd4s(self):  #处理数据文件字段表
        rd["fieldlist"]=[]
        for l in file("../data/field.txt","r").readlines():
            d=l.decode("gbk").split("|")
            h=[]
            h.append(d[0])
            h.append(d[1])
            if d[2]=="N":
                h.append("%s%s.%s" %(d[2],d[3],d[4]))
            else:
                h.append("%s%s" %(d[2],d[3]))
            h.append(d[5])
            h.append(d[6])
            rd["fieldlist"].append(h)
    def rd5s(self):  #处理返回码数据字典
        rd["returncode"]=[]
        for l in file("../data/returncode.txt","r").readlines():
            d=l.decode("gbk").split("|")
            rd["returncode"].append(d)

main()
